package com.niiwoo.civet.account.dto.response;

import lombok.AllArgsConstructor;
import lombok.Getter;
import lombok.Setter;

import java.io.Serializable;
import java.math.BigDecimal;

@Setter
@Getter
@AllArgsConstructor
public class QueryMoneyTotalResponseDTO implements Serializable {
	
	public QueryMoneyTotalResponseDTO(){
		super();
	}

	public QueryMoneyTotalResponseDTO(BigDecimal amountTotal, BigDecimal investorAvailableBalance,
			BigDecimal borrowerAvailableBalance, BigDecimal onWayAmount, BigDecimal dueInCorpusInterest,
			BigDecimal dueInCorpus, BigDecimal dueInInterest, BigDecimal dueInPenaltyFee,
			BigDecimal guaranteeCashDeposit, BigDecimal advance, BigDecimal otherAmount, BigDecimal investFreeze,
			BigDecimal guaranteeFreeze, BigDecimal repaymentFreeze, BigDecimal withdrawFreeze, BigDecimal incomeTotal,
			BigDecimal investIncome, BigDecimal researchIncome, BigDecimal guaranteeIncome, BigDecimal platformGiven,
			BigDecimal investGiven, BigDecimal platformProvide, BigDecimal userRedPacket, BigDecimal payTotal,
			BigDecimal investFee, BigDecimal guaranteeIncomeFee, BigDecimal withdrawFee, BigDecimal borrowFee,
			BigDecimal borrowGuaranteeServiceFee, BigDecimal borrowArbitrationFee, BigDecimal borrowPlatformServiceFee,
			BigDecimal borrowPlatformManagerFee, BigDecimal borrowInterest, BigDecimal borrowPenaltyFee,
			BigDecimal borrowGuaranteeFee, BigDecimal collectionServiceFee, BigDecimal investigateFee,
			BigDecimal rechargeTotal, BigDecimal withdrawTotal, BigDecimal investTotal, BigDecimal borrowTotal,
			BigDecimal repaymentTotal) {
		super();
		this.amountTotal = amountTotal;
		this.investorAvailableBalance = investorAvailableBalance;
		this.borrowerAvailableBalance = borrowerAvailableBalance;
		this.onWayAmount = onWayAmount;
		this.dueInCorpusInterest = dueInCorpusInterest;
		this.dueInCorpus = dueInCorpus;
		this.dueInInterest = dueInInterest;
		this.dueInPenaltyFee = dueInPenaltyFee;
		this.guaranteeCashDeposit = guaranteeCashDeposit;
		this.advance = advance;
		this.otherAmount = otherAmount;
		this.investFreeze = investFreeze;
		this.guaranteeFreeze = guaranteeFreeze;
		this.repaymentFreeze = repaymentFreeze;
		this.withdrawFreeze = withdrawFreeze;
		this.incomeTotal = incomeTotal;
		this.investIncome = investIncome;
		this.researchIncome = researchIncome;
		this.guaranteeIncome = guaranteeIncome;
		this.platformGiven = platformGiven;
		this.investGiven = investGiven;
		this.platformProvide = platformProvide;
		this.userRedPacket = userRedPacket;
		this.payTotal = payTotal;
		this.investFee = investFee;
		this.guaranteeIncomeFee = guaranteeIncomeFee;
		this.withdrawFee = withdrawFee;
		this.borrowFee = borrowFee;
		this.borrowGuaranteeServiceFee = borrowGuaranteeServiceFee;
		this.borrowArbitrationFee = borrowArbitrationFee;
		this.borrowPlatformServiceFee = borrowPlatformServiceFee;
		this.borrowPlatformManagerFee = borrowPlatformManagerFee;
		this.borrowInterest = borrowInterest;
		this.borrowPenaltyFee = borrowPenaltyFee;
		this.borrowGuaranteeFee = borrowGuaranteeFee;
		this.collectionServiceFee = collectionServiceFee;
		this.investigateFee = investigateFee;
		this.rechargeTotal = rechargeTotal;
		this.withdrawTotal = withdrawTotal;
		this.investTotal = investTotal;
		this.borrowTotal = borrowTotal;
		this.repaymentTotal = repaymentTotal;
	}

	public QueryMoneyTotalResponseDTO(BigDecimal amountTotal, BigDecimal investorAvailableBalance,
									  BigDecimal borrowerAvailableBalance, BigDecimal onWayAmount, BigDecimal dueInCorpusInterest,
									  BigDecimal dueInCorpus, BigDecimal dueInInterest, BigDecimal dueInPenaltyFee,
									  BigDecimal guaranteeCashDeposit, BigDecimal advance, BigDecimal otherAmount, BigDecimal investFreeze,
									  BigDecimal guaranteeFreeze, BigDecimal repaymentFreeze, BigDecimal withdrawFreeze, BigDecimal incomeTotal,
									  BigDecimal investIncome, BigDecimal researchIncome, BigDecimal guaranteeIncome, BigDecimal platformGiven,
									  BigDecimal investGiven, BigDecimal platformProvide, BigDecimal userRedPacket, BigDecimal payTotal,
									  BigDecimal investFee, BigDecimal guaranteeIncomeFee, BigDecimal withdrawFee, BigDecimal creditorSaleFee,
									  BigDecimal borrowFee, BigDecimal borrowGuaranteeServiceFee, BigDecimal borrowArbitrationFee,
									  BigDecimal borrowPlatformServiceFee, BigDecimal borrowPlatformManagerFee, BigDecimal borrowInterest,
									  BigDecimal borrowPenaltyFee, BigDecimal borrowGuaranteeFee, BigDecimal collectionServiceFee, BigDecimal investigateFee,
									  BigDecimal rechargeTotal, BigDecimal withdrawTotal, BigDecimal investTotal, BigDecimal borrowTotal,
									  BigDecimal repaymentTotal) {
		super();
		this.amountTotal = amountTotal;
		this.investorAvailableBalance = investorAvailableBalance;
		this.borrowerAvailableBalance = borrowerAvailableBalance;
		this.onWayAmount = onWayAmount;
		this.dueInCorpusInterest = dueInCorpusInterest;
		this.dueInCorpus = dueInCorpus;
		this.dueInInterest = dueInInterest;
		this.dueInPenaltyFee = dueInPenaltyFee;
		this.guaranteeCashDeposit = guaranteeCashDeposit;
		this.advance = advance;
		this.otherAmount = otherAmount;
		this.investFreeze = investFreeze;
		this.guaranteeFreeze = guaranteeFreeze;
		this.repaymentFreeze = repaymentFreeze;
		this.withdrawFreeze = withdrawFreeze;
		this.incomeTotal = incomeTotal;
		this.investIncome = investIncome;
		this.researchIncome = researchIncome;
		this.guaranteeIncome = guaranteeIncome;
		this.platformGiven = platformGiven;
		this.investGiven = investGiven;
		this.platformProvide = platformProvide;
		this.userRedPacket = userRedPacket;
		this.payTotal = payTotal;
		this.investFee = investFee;
		this.guaranteeIncomeFee = guaranteeIncomeFee;
		this.withdrawFee = withdrawFee;
		this.creditorSaleFee = creditorSaleFee;
		this.borrowFee = borrowFee;
		this.borrowGuaranteeServiceFee = borrowGuaranteeServiceFee;
		this.borrowArbitrationFee = borrowArbitrationFee;
		this.borrowPlatformServiceFee = borrowPlatformServiceFee;
		this.borrowPlatformManagerFee = borrowPlatformManagerFee;
		this.borrowInterest = borrowInterest;
		this.borrowPenaltyFee = borrowPenaltyFee;
		this.borrowGuaranteeFee = borrowGuaranteeFee;
		this.collectionServiceFee = collectionServiceFee;
		this.investigateFee = investigateFee;
		this.rechargeTotal = rechargeTotal;
		this.withdrawTotal = withdrawTotal;
		this.investTotal = investTotal;
		this.borrowTotal = borrowTotal;
		this.repaymentTotal = repaymentTotal;
	}




	/**
	 * 
	 */
	private static final long serialVersionUID = -559890556787098286L;

	/**
	 * 财富总额(可用余额[投资账户余额+借款账户余额]+在途资金)
	 */
	private BigDecimal amountTotal;
	
	/**
	 * 投资账户可用余额
	 */
	private BigDecimal investorAvailableBalance;
	/**
	 * 借款账户可用余额
	 */
	private BigDecimal borrowerAvailableBalance;
	
	/**
	 * 在途金额(待收本息+担保保证金+垫付金额+其它金额)
	 */
	private BigDecimal onWayAmount;
	
	/**
	 * 待收本息(待收本金+待收利息)
	 */
	private BigDecimal dueInCorpusInterest;
	/**
	 * 待收本金
	 */
	private BigDecimal dueInCorpus;
	/**
	 * 待收利息
	 */
	private BigDecimal dueInInterest;
	/**
	 * 待收罚息
	 */
	private BigDecimal dueInPenaltyFee;
	/**
	 * 担保保证金
	 */
	private BigDecimal guaranteeCashDeposit;
	/**
	 * 垫付金额
	 */
	private BigDecimal advance;


	/**
	 * 其它金额 (投资冻结+担保中未成标金额+还款冻结+提现冻结)
	 */
	private BigDecimal otherAmount;
	/**
	 * 投资冻结
	 */
	private BigDecimal investFreeze;
	/**
	 * 担保冻结
	 */
	private BigDecimal guaranteeFreeze;
	/**
	 * 还款冻结
	 */
	private BigDecimal repaymentFreeze;
	/**
	 * 提现冻结
	 */
	private BigDecimal withdrawFreeze;
	
	/**
	 * 累计收益(投资收益+尽调收益+担保收益+平台奖励+投资奖励+平台发放+用户红包)
	 */
	private BigDecimal incomeTotal;
	
	/**
	 * 投资收益
	 */
	private BigDecimal investIncome;
	/**
	 * 尽调收益
	 */
	private BigDecimal researchIncome;
	/**
	 * 担保收益
	 */
	private BigDecimal guaranteeIncome;
	/**
	 * 平台奖励
	 */
	private BigDecimal platformGiven;
	/**
	 * 投资奖励
	 */
	private BigDecimal investGiven;
	/**
	 * 平台发放
	 */
	private BigDecimal platformProvide;
	/**
	 * 用户红包
	 */
	private BigDecimal userRedPacket;

	/**
	 * 累计支出(投资费用+担保收益支出费用+提现手续费+借款费用+提现手续费+债权出让手续费)
	 */
	private BigDecimal payTotal;
	/**
	 * 投资费用
	 */
	private BigDecimal investFee;
	/**
	 * 担保收益支出费用-担保人身份担保收益时支出手续费
	 */
	private BigDecimal guaranteeIncomeFee;
	/**
	 * 提现手续费
	 */
	private BigDecimal withdrawFee;
	/**
	 * 债权出让手续费
	 */
	private BigDecimal creditorSaleFee;
	/**
	 * 借款费用(借款的所有支出费用：担保费+预仲裁+平台服务费+平台管理费+利息+罚息)
	 */
	private BigDecimal borrowFee;
	/**
	 * 借款担保服务费
	 */
	private BigDecimal borrowGuaranteeServiceFee;
	/**
	 * 借款预仲裁费
	 */
	private BigDecimal borrowArbitrationFee;
	/**
	 * 借款平台服务费
	 */
	private BigDecimal borrowPlatformServiceFee;
	/**
	 * 借款平台管理费
	 */
	private BigDecimal borrowPlatformManagerFee;
	/**
	 * 借款利息
	 */
	private BigDecimal borrowInterest;
	/**
	 * 借款罚息
	 */
	private BigDecimal borrowPenaltyFee;
	/**
	 * 借款担保费
	 */
	private BigDecimal borrowGuaranteeFee;
	/**
	 * 催收服务费
	 */
	private BigDecimal collectionServiceFee;
	/**
	 * 尽调费
	 */
	private BigDecimal investigateFee;
	/**
	 * 累计充值金额
	 */
	private BigDecimal rechargeTotal;
	/**
	 * 累计提现金额
	 */
	private BigDecimal withdrawTotal;
	/**
	 * 累计投资金额
	 */
	private BigDecimal investTotal;
	/**
	 * 累计借款金额
	 */
	private BigDecimal borrowTotal;
	/**
	 * 累计还款金额
	 */
	private BigDecimal repaymentTotal;
	/**
	 * 是否存在信用借(1，存在，0不存在)
	 */
	private int  isExistCredit;
	/**
	 * 是否存在机构极速借(1，存在，0不存在)
	 */
	private int  isOrgLoan;

	/**
	 * 是否存在财富数据 前端展示使用
	 * 前端展示规则，以下任意一项数据不为0，前端展示相应数据：
		1.投资账户可用余额
		2.借款账户可用余额
		3.累计收益
		4.费用支出
		5.累计充值金额
		6.累计提现金额
	 */
	private Boolean isExistMoneyData;
}
